package com.dl.mall.mapper;

import com.dl.mall.entity.user.Order;
import com.dl.mall.entity.user.OrderInfo;
import com.dl.mall.entity.vo.OrderCartVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 订单类
 * @author DL
 * @create 2022-4-11 11:47:56
 */
@Mapper
public interface OrderMapper {

    /**
     * 新增订单
     * @param order 订单类
     * @return 行数
     */
    int insertOrder(Order order);

    /**
     * 新增订单详情
     * @param orderInfoList 订单信息列表
     * @return 行数
     */
    int insertOrderInfo(@Param("orderInfoList") List<OrderInfo> orderInfoList);

    /**
     * 更新订单地址
     * @param orderId 订单id
     * @param addressId 地址id
     * @return 行数
     */
    int updateOrderAddress(@Param("orderId")String orderId, @Param("addressId") String addressId);

    /**
     * 更新订单状态
     * @param orderId 订单id
     * @param orderState 状态
     * @return 行数
     */
    int updateOrderState(@Param("orderId")String orderId, @Param("orderState") Integer orderState);

    /**
     * 根据 订单id 查询订单信息
     * @param orderId 订单id
     * @return 信息
     */
    Order queryOrderInfoById(String orderId);

    /**
     * 根据 订单id 查询订单商品信息
     * @param orderId 订单id
     * @return 信息
     */
    List<OrderCartVo> queryOrderCartVoById(String orderId);

    /**
     * 根据 用户id 查询用户历史订单
     * @param condition 条件
     * @return 结果
     */
    List<HashMap<String, Object>> queryHistoryOrderInfo(Map<String,Object> condition);

    /**
     * 根据 订单id 查询订单商品信息
     * @param orderId 订单id
     * @return 信息
     */
    List<OrderInfo> queryOrderInfoListById(String orderId);

    /* ================================ admin =============================== */

    /**
     * 查询 所有用户 历史订单
     * @param condition 条件
     * @return 结果
     */
    List<HashMap<String, Object>> queryHistoryOrderInfoByCondition(Map<String,Object> condition);


    /**
     * 查询 所有用户 历史订单
     * @param orderId 订单id
     * @return 结果
     */
    HashMap<String, Object> queryHistoryOrderInfoById(String orderId);

    /**
     * 查询最新十条
     * @return
     */
    List<Order> queryOrderList();


    /**
     * 根据 天数 查询订单
     * @return
     */
    List<Order> queryOrderListByDay(Integer day);




}
